The development of the EDVAC computer system of 1948 is often cited as the beginning of the computer era. Since that time, computer systems have evolved into extremely sophisticated devices that are used in a host of different applications. In the early days of computers, software was bundled with hardware and the two were sold together. However, in more recent times, software became available separate from any hardware, which could then be installed and used on a compatible computer system.
When computer software is "sold", ownership of the software is typically not transferred to the buyer, but the buyer is licensed to use the software subject to certain terms and conditions that are contained in the license agreement that accompanies the software. With the growing popularity of computer networks, many people may now have access to run a particular software program that is available on the network. Some software licenses allow a relatively large number of users, but restrict the number of simultaneous users to a much smaller number. In such an environment, the execution of the software must be monitored to assure that the use of the computer software on the network does not violate the license agreement. Any monitoring of a computer program as it runs is referred to herein as metering.
Other situations also arise that require metering computer software as it runs. One such situation is for benchmarking the performance of a computer program to determine how often the different portions of the program are executed and to measure overall system performance. There are numerous different situations where the metering of a computer program is desirable.
In the past, computers have been programmed with metering software. Metering software has typically been custom-developed according to the specific needs of a particular program that needs to be metered. While the specific metering requirements of different computer programs may differ considerably, many of the metering functions are similar across different programs. However, the differences in prior art metering software has precluded reusing very much metering code from one computer program to the next. Each different computer program typically has its own custom, dedicated way of performing the desired metering that is not easily adapted to any new or different computer program.
With the development of Object Oriented (OO) programming techniques, computer programs consist of a collection of objects that each contain data and associated operations or methods for operating on the data. In an object oriented environment, metering implies measuring certain parameters on objects that have methods that are invoked while a computer program executes. However, even in an OO programming environment, the details of the desired metering function must be programmed to fit a desired metering environment. Without a mechanism that can be readily customized and extended to meter a computer program in a particular metering environment, the time required to program and maintain metering software will be excessively long and expensive.